// 我们假设后端登录接口为 POST /api/teacher/auth/login
// 成功后返回 { token: '...', user: { id: 1, username: '张老师', ... } }

// 引入统一的axios实例
import api from './api';

const authService = {
  /**
   * 登录方法
   * @param {object} credentials - 包含用户名和密码的对象
   * @param {string} credentials.username - 用户名
   * @param {string} credentials.password - 密码
   * @returns {Promise<object>} - 成功时返回包含 token 和 user 的对象
   * @throws {Error} - 失败时抛出带有错误信息的 Error 对象
   */
  async login({ username, password }) {
    try {
      // --- (核心修改) 将之前的模拟代码替换为真实的API调用 ---
      // 我们假设后端的登录接口是 /api/teacher/auth/login，这与您之前的注释一致。
      // api 实例会自动拼接 baseURL，所以我们只需要提供相对路径。
      console.log(`[AuthService] 正在向后端发送登录请求, 用户名: ${username}`);
      const response = await api.post('/api/teacher/auth/login', { username, password });

      console.log("111");
      // --- (数据校验) 检查后端返回的数据结构是否符合预期 ---
      // 确保返回的数据中包含 token 字段。
      if (response.data.data && response.data.data.token) {
        console.log('[AuthService] 登录成功, 后端返回:', response.data);
        return response.data.data; // 返回包含token和user的对象
      } else {
        // 如果后端返回200但数据格式不正确，我们也将其视为一种错误。
        throw new Error(response.data.message);
      }

    } catch (error) {
      // --- (错误处理) 捕获并处理网络请求中发生的错误 ---
      console.error('[AuthService] 登录请求失败:', error);

      // 优先使用后端返回的错误信息（通常在 error.response.data.message 中）
      if (error.response && error.response.data && error.response.data.message) {
        throw new Error(error.response.data.message);
      }

      // 如果后端没有提供具体的错误信息，则使用axios提供的通用错误信息
      if (error.message) {
        throw new Error(error.message);
      }

      // 最后提供一个通用的备用错误信息
      throw new Error('登录请求失败，请稍后重试');
    }
  }
};

export default authService;

// 在 src/services/api.js 中，需要创建一个axios实例
/*
import axios from 'axios';

const api = axios.create({
  baseURL: 'http://your-backend-api-url.com', // 替换为你的后端地址
  headers: {
    'Content-Type': 'application/json',
  },
});

export default api;
*/